﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Castle.Utilities;
using Castle.RegistrationSubjects.Data;
using System.IO;
using System.Text;
using System.Threading;
using Castle.General;
namespace Castle.RegistrationSubjects.interfaces
{
    public partial class e35c770d_4495_494c_9029_70bf919e2a1d : System.Web.UI.Page
    {
        #region Members
        private string DotDKUID
        {
            get { return hid_DotDKUID.Value; }
            set { hid_DotDKUID.Value = value; }
        }
        string err = string.Empty;
        #endregion       

        #region Page load
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Castle.General.AuthenticationLogin.GETPRIORITY() != "20")
                    {
                        Response.Redirect("http://www.daotao.hcmut.edu.vn");
                        return;
                    }
                    /*Load Danh Sach Hoc Ky*/
                    LoadSemester();
                    Session["Buffer"] = null;
                }
            }
            catch
            {
            }
        }
        #endregion

        #region Xác nhận đăng ký
        protected void btnConfirm_Click(object sender, EventArgs e)
        {
            try
            {
                //NetLog.WriteLog(SessionInfo.GetInfoHocVienLogined.HocVienUID, "2e65b35e-a502-469b-9991-b7becf75db75", Enums.ActionCode.CreateNew, Enums.ResultCode.Sucess, "Thực hiện xác nhận kết quả đăng ký môn học");
                IsubDKDotCaiDat iCD = new subDKDotCaiDat();
                string Result_Check = iCD.sub_KiemTraSoTinChiSoMonHocsubDKDotCaiDat(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
                if (!string.IsNullOrEmpty(Result_Check))
                {
                    switch (Result_Check)
                    {
                        case "SMTT": Msg("Bạn đăng ký chưa đủ chỉ tiêu số môn theo qui định. Tổng số môn tối thiểu bạn phải đăng ký là " + SessionInfo.GetInfoDotDK(DotDKUID).SoMonDangKyToiThieu.ToString() + " môn"); return;
                        case "SMTD": Msg("Bạn đã đăng ký vượt quá số môn qui định. Tổng số môn tối đa bạn được phép đăng ký là " + SessionInfo.GetInfoDotDK(DotDKUID).SoMonDangKyToiDa.ToString() + " môn"); return;
                        case "STCTT": Msg("Bạn đăng ký chưa đủ chỉ tiêu số tín chỉ theo qui định. Tổng số tín chỉ tối thiểu bạn phải đăng ký là " + SessionInfo.GetInfoDotDK(DotDKUID).SoTinChiDangKyToiThieu.ToString() + " tín chỉ"); return;
                        case "STCTD": Msg("Bạn đã đăng ký vượt quá số tín chỉ qui định. Tổng số tín chỉ tối đa bạn được phép đăng ký là " + SessionInfo.GetInfoDotDK(DotDKUID).SoTinChiDangKyToiDa.ToString() + " tín chỉ"); return;
                    }
                }

                bool flag = true;
                IsubKQDangKyMonHocBuffer iBuffer = new subKQDangKyMonHocBuffer();
                DataTable dtBuffer2 = iBuffer.sub_GetsubKQDangKyMonHocBuffer(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);

                bool changed = false;
                for (int j = 0; j < dtBuffer2.Rows.Count; j++)
                {
                    if (dtBuffer2.Rows[j]["ChuaXacNhan"].ToString() != "0")
                    {
                        changed = true;
                        break;
                    }
                }

                if (!changed)
                {
                    ClearEnable();
                    Msg("Hiện tại bạn chưa có thay đổi gì trong danh sách đăng ký môn học nên bạn không cần phải xác nhận lại!");
                    return;
                }

                IsubKQDangKyMonHoc inter = new subKQDangKyMonHoc();
                Obj_subKQDangKyMonHoc one = null;
                if (dtBuffer2.Rows.Count > 0)
                {
                    for (int i = 0; i < dtBuffer2.Rows.Count; i++)
                    {
                        if (dtBuffer2.Rows[i]["ChuaXacNhan"].ToString() != "0")
                        {
                            one = new Obj_subKQDangKyMonHoc();
                            one.DotDKUID = DotDKUID;
                            one.HocVienUID = SessionInfo.GetInfoHocVienLogined.HocVienUID;
                            one.MonHocUID = dtBuffer2.Rows[i]["MonHocUID"].ToString();
                            one.NhomHoc1 = dtBuffer2.Rows[i]["NhomHoc1"].ToString();
                            one.NhomHoc2 = dtBuffer2.Rows[i]["NhomHoc2"].ToString();
                            one.DieuChinhID = dtBuffer2.Rows[i]["DieuChinhID"].ToString();
                            one.KhoaMonHocYN = dtBuffer2.Rows[i]["KhoaMHYN"].ToString();
                            one.HocPhiYN = false;
                            one.KhoaDangKyYN = false;
                            one.XacNhanYN = true;
                            one.TinhTrang = dtBuffer2.Rows[i]["XuLy"].ToString();
                            one.DieuChinhID2 = dtBuffer2.Rows[i]["DieuChinhID2"].ToString();
                            /*================================================================*/
                            if (dtBuffer2.Rows[i]["ChuaXacNhan"].ToString() == "1")
                            {

                                if (inter.sub_InsertsubKQDangKyMonHoc(one, ref err))
                                {
                                    flag = true;
                                }
                                else
                                {
                                    flag = false;
                                    break;
                                }

                            }
                            else
                            {
                                if (inter.sub_UpdatesubKQDangKyMonHoc(one, ref err))
                                {
                                    flag = true;
                                }
                                else
                                {
                                    flag = false;
                                    break;
                                }
                            }
                        }
                    }
                }

                if (flag == true)
                {
                    if (WriteEmailFileText())
                    {
                        ClearEnable();
                        DeleteSessionBuffer();
                        Session["Buffer"] = null;
                        Load_Danh_Sach_Mon_Hoc_Mo();
                        Load_TKB_MHoc_Mo_DK("", "");
                        Load_Ket_Qua_Dang_Ky();
                        NetLog.WriteLog(SessionInfo.GetInfoHocVienLogined.HocVienUID, "2e65b35e-a502-469b-9991-b7becf75db75", Enums.ActionCode.CreateNew, Enums.ResultCode.Sucess, "Xác nhận kết quả đăng ký thành công!");
                        Msg("Xác nhận kết quả đăng ký thành công, bạn vui lòng vào mail STU (sau 12 giờ) hoặc kết quả đăng ký trên portal để kiểm tra!");
                        return;
                    }
                }
                else
                {
                    ClearEnable();
                    Load_Danh_Sach_Mon_Hoc_Mo();
                    Load_TKB_MHoc_Mo_DK("", "");
                    Load_Ket_Qua_Dang_Ky();
                    NetLog.WriteLog(SessionInfo.GetInfoHocVienLogined.HocVienUID, "2e65b35e-a502-469b-9991-b7becf75db75", Enums.ActionCode.CreateNew, Enums.ResultCode.Error, "Phát sinh trong quá trình xác nhận kết quả, vui lòng làm lại các thao tác xác nhận." + err);
                    Msg("Phát sinh trong quá trình xác nhận kết quả, vui lòng làm lại các thao tác xác nhận." + err);
                    return;
                }
            }
            catch (Exception ex)
            {
                ClearEnable();
                err = ex.Message;
                NetLog.WriteLog(SessionInfo.GetInfoHocVienLogined.HocVienUID, "2e65b35e-a502-469b-9991-b7becf75db75", Enums.ActionCode.CreateNew, Enums.ResultCode.Error, "Phát sinh trong quá trình xác nhận kết quả " + err);
                Msg("Phát sinh trong quá trình xác nhận kết quả " + err);
                return;
            }

        }
        #endregion

        #region Delete Session Buffer
        private void DeleteSessionBuffer()
        {
            IsubKQDangKyMonHocBuffer inter = new subKQDangKyMonHocBuffer();
            inter.sub_DeletesubKQDangKyMonHocBufferByDotDKID(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
        }
        #endregion

        #region Write Email
        public bool WriteEmailFileText()
        {
            IsubKQDangKyMonHoc isubKQ = new subKQDangKyMonHoc();
            DataTable dtBuffer2 = isubKQ.sub_GetsubKQDangKyMonHoc(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
            if (dtBuffer2.Rows.Count > 0)
            {
                #region PathSave
                
                string folder1 = SessionInfo.GetInfoDotDK(DotDKUID).DotDKID;
                string folder2 = DateTime.Now.ToString("ddMMyy");
                string _path1 = Server.MapPath("/dkmh/Storages/Email/");
                string _path2 = Server.MapPath("/dkmh/Storages/Email/" + folder1);
                string newPath1 = System.IO.Path.Combine(_path1, folder1);
                string newPath2 = System.IO.Path.Combine(_path2, folder2);
                Directory.CreateDirectory(newPath1);
                Directory.CreateDirectory(newPath2);
                string fileName = SessionInfo.GetInfoHocVienLogined.HocVienID + "_" + DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString()
                                      + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                string path = Server.MapPath("/dkmh/Storages/Email/" + folder1 + "/" + folder2 + "/" + fileName + ".txt");

                #endregion

                if (File.Exists(path))
                {
                    Msg("Không tìm thấy đường dẫn lưu tập tin kết quả đăng ký, vui lòng liên hệ quản trị hệ thống");
                    return false;
                }

                #region ContentEmail
                StringBuilder sb = new StringBuilder();
                sb.Append("Sử dụng font Courier New để xem file này (Nếu không xem được)");
                sb.Append(Environment.NewLine);
                sb.Append(Environment.NewLine);
                sb.Append("Phòng đào tạo - Trường Đại Học Bách Khoa Tp.HCM");
                sb.Append(Environment.NewLine);
                sb.Append(Environment.NewLine);
                sb.Append("Dịch vụ đăng ký môn học");
                sb.Append(Environment.NewLine);
                sb.Append(Environment.NewLine);
                sb.Append("Đợt đăng ký: " + SessionInfo.GetInfoDotDK(DotDKUID).DotDKTen);
                sb.Append(Environment.NewLine);
                sb.Append("Hiệu chỉnh vào lúc: " + DateTime.Now.Hour + " giờ " + DateTime.Now.Minute + " phút, ngày " + DateTime.Now.Day.ToString() + "/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString());
                sb.Append(Environment.NewLine);
                sb.Append("Sinh viên: " + SessionInfo.GetInfoHocVienLogined.HocVienID.ToUpper() + " - " + SessionInfo.GetInfoHocVienLogined.HocVienHoVaTen);
                sb.Append(Environment.NewLine);
                sb.Append("Bảng ghi nhận kết quả hiệu chỉnh - bổ sung:");
                sb.Append(Environment.NewLine);
                sb.Append("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
                sb.Append(Environment.NewLine);
                sb.Append("Mã môn học" + "\t" + "Nhóm học" + "\t" + "Tên môn học" + "\t\t\t" + "Kết quả" + "\t" + "Môn bài tập"
                                 + "\t" + "Nhóm bài tập" + "\t" + "Nhóm đổi" + "\t\t" + "Tình trạng" + "\t" + "Xử lý" + "\t\t" + "Ghi chú");
                sb.Append(Environment.NewLine);
                sb.Append("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
                sb.Append(Environment.NewLine);

                for (int i = 0; i < dtBuffer2.Rows.Count; i++)
                {
                    string mamh = dtBuffer2.Rows[i]["MonHocID"].ToString() + "\t\t";

                    string nhom1 = (dtBuffer2.Rows[i]["NhomHoc1"].ToString() != "" ? dtBuffer2.Rows[i]["NhomHoc1"].ToString() : "--");
                    nhom1 += "\t\t";

                    string tenmh = dtBuffer2.Rows[i]["MonHocTen"].ToString().Trim();
                    if (tenmh.Length > 20)
                    {
                        tenmh += "\t\t";
                    }
                    else
                    {
                        tenmh += "\t\t\t";
                    }

                    string kq = (dtBuffer2.Rows[i]["KetQua"].ToString() != "" ? dtBuffer2.Rows[i]["KetQua"].ToString() : "--");
                    kq += "\t";


                    string mabt = (dtBuffer2.Rows[i]["BaiTapID"].ToString() != "" ? dtBuffer2.Rows[i]["BaiTapID"].ToString() : "--");
                    mabt += "\t\t";


                    string nhombt = (dtBuffer2.Rows[i]["NhomBaiTap"].ToString() != "" ? dtBuffer2.Rows[i]["NhomBaiTap"].ToString() : "--");
                    nhombt += "\t\t";


                    string nhom2 = (dtBuffer2.Rows[i]["NhomHoc2"].ToString() != "" ? dtBuffer2.Rows[i]["NhomHoc2"].ToString() : "--");
                    nhom2 += "\t\t";


                    string tinhtrang = string.IsNullOrEmpty(subKyHieuDangKy.TenKyHieuHieuChinh(dtBuffer2.Rows[i]["DieuChinhID"].ToString())) ? "--" : subKyHieuDangKy.TenKyHieuHieuChinh(dtBuffer2.Rows[i]["DieuChinhID"].ToString());
                    if (dtBuffer2.Rows[i]["DieuChinhID"].ToString().Trim().ToUpper() == "HC")
                    {
                        tinhtrang += "\t";
                    }
                    else
                    {
                        tinhtrang += "\t\t";
                    }


                    string xuly = string.IsNullOrEmpty(subKyHieuDangKy.TenKyHieuTrangThaiXuLy(dtBuffer2.Rows[i]["TinhTrang"].ToString())) ? "--" : subKyHieuDangKy.TenKyHieuTrangThaiXuLy(dtBuffer2.Rows[i]["TinhTrang"].ToString());
                    if (dtBuffer2.Rows[i]["TinhTrang"].ToString().Trim().ToUpper() == "RC")
                    {
                        xuly += "\t\t";
                    }
                    else
                    {
                        xuly += "\t";
                    }

                    sb.Append(mamh + nhom1 + tenmh + kq + mabt + nhombt + nhom2 + tinhtrang + xuly + (dtBuffer2.Rows[i]["GhiChu"].ToString() != "" ? dtBuffer2.Rows[i]["GhiChu"].ToString() : "--"));
                    sb.Append(Environment.NewLine);
                    sb.Append("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
                    sb.Append(Environment.NewLine);
                }
                sb.Append("Bảng ghi chú các ký hiệu cột kết quả, sinh viên tham khảo tại trang http://www.aao.hcmut.edu.vn/aao_tkb.php");
                #endregion

                if (string.IsNullOrEmpty(sb.ToString()))
                {
                    Msg("Không ghi được nội dung xác nhận kết quả đăng ký");
                    return false;
                }

                Obj_subLogMailXacNhanKQ obj = new Obj_subLogMailXacNhanKQ();
                obj.DotDKUID = DotDKUID;
                obj.HocVienUID = SessionInfo.GetInfoHocVienLogined.HocVienUID;
                obj.NoiDung = sb.ToString();
                obj.TinhTrang = "N";
                IsubLogMailXacNhanKQ IsubKQs = new subLogMailXacNhanKQ();
                if (IsubKQs.sub_WritesubLogMailXacNhanKQ(obj, ref err))
                {
                    StreamWriter _writeFile = new StreamWriter(path, true, System.Text.Encoding.Unicode);
                    _writeFile.WriteLine(sb.ToString());
                    _writeFile.Flush();
                    _writeFile.Close();
                    _writeFile.Dispose();
                    obj = null;
                    isubKQ = null;
                    IsubKQs = null;
                    return true;
                }
                else
                {
                    Msg("Không ghi được nội dung xác nhận kết quả đăng ký");
                    return false;
                }
            }
            Msg("Không tìm thấy kết quả đăng ký");
            return false;
        }
        #endregion

        #region Clear

        public void ClearEnable()
        {
            addItem.Visible = false;
            updateitem.Visible = false;
            _lbMonHocID.Text = "";
            _lbMonHocTen.Text = "";
            _lbNhomHoc1.Text = "";
            //_ecboxNhomHoc2.Items.Clear();
            hid_SubjectIDSelect.Value = "";
            //hid_NhomHocCam.Value = "";
            txt_SubjectCode.Text = "";
        }
        #endregion
        /// <summary>
        /// 
        /// </summary>
        /// <param name="msg"></param>
        private void Msg(string msg)
        {
            if (string.IsNullOrEmpty(msg))
            {
                return;
            }
            StringBuilder sb = new StringBuilder();
            sb.Append("$.msgBox({title: 'Thông báo',content: '" + msg + "'});");
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "MSGBOXJQ", sb.ToString(), true);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void bntRestore_Click(object sender, EventArgs e)
        {
            try
            {
                ClearEnable();
                IsubKQDangKyMonHocBuffer inter = new subKQDangKyMonHocBuffer();
                inter.sub_DeletesubKQDangKyMonHocBufferByDotDKID(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
                Session["Buffer"] = null;
                Load_Ket_Qua_Dang_Ky();
                Load_TKB_MHoc_Mo_DK("", "");
                Msg("Kết quả đăng ký đã xác nhận đã được khôi phục!");
            }
            catch(Exception ex)
            {
                err = ex.Message;
                Msg(err);
            }
        }

        #region Dot_Dang_Ky_Mon_Hoc
        /// <summary>
        /// 
        /// </summary>
        private void LoadSemester()
        {
            try
            {
                IsubDKDot IDDK = new subDKDot();
                DataTable dt = IDDK.sub_GetListSemesterExistsDotDK(ref err);
                drp_Semester.DataSource = dt;
                drp_Semester.DataTextField = "SemesterName";
                drp_Semester.DataValueField = "HocKyUID";
                drp_Semester.DataBind();
                drp_Semester.SelectedIndex = 0;
                if (dt.Rows.Count > 0)
                {
                    LoadDotBySemester(dt.Rows[0]["HocKyUID"].ToString());
                }
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void drp_Semester_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(drp_Semester.SelectedValue))
                {
                    lst_Danh_Sach_Dot_Dang_Ky.DataSource = null;
                    lst_Danh_Sach_Dot_Dang_Ky.DataBind();
                    return;
                }
                LoadDotBySemester(drp_Semester.SelectedValue);
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private void LoadDotBySemester(string HocKyUID)
        {
            DataTable tb = new DataTable();
            tb.Columns.Add("DotDKUID");
            tb.Columns.Add("DotDKID");
            tb.Columns.Add("DotDKTen");
            tb.Columns.Add("Openning");
            tb.Columns.Add("NgayBatDau");
            tb.Columns.Add("NgayKetThuc");
            tb.Columns.Add("Checked");
            DataRow dr = null;
            DataTable dt = null;
            IsubDKDot inter = new subDKDot();

            DataSet ds = new DataSet();
            ds = inter.sub_GetDanhSachDotDangKyByHocKyID(SessionInfo.GetInfoHocVienLogined.HocVienUID, HocKyUID, ref err);

            if (ds.Tables.Count > 0)
            {
                dt = ds.Tables[0];
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        dr = tb.NewRow();
                        dr["DotDKUID"] = dt.Rows[i]["DotDKUID"].ToString();
                        dr["DotDKID"] = dt.Rows[i]["DotDKID"].ToString();
                        dr["DotDKTen"] = dt.Rows[i]["DotDKTen"].ToString();
                        dr["Openning"] = dt.Rows[i]["Openning"].ToString();
                        dr["NgayBatDau"] = dt.Rows[i]["NgayBatDau"].ToString();
                        dr["NgayKetThuc"] = dt.Rows[i]["NgayKetThuc"].ToString();
                        dr["Checked"] = "false";
                        tb.Rows.Add(dr);
                    }
                }

                if (ds.Tables.Count > 1)
                {
                    dt = new DataTable();
                    dt = ds.Tables[1];
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            dr = tb.NewRow();
                            dr["DotDKUID"] = dt.Rows[i]["DotDKUID"].ToString();
                            dr["DotDKID"] = dt.Rows[i]["DotDKID"].ToString();
                            dr["DotDKTen"] = dt.Rows[i]["DotDKTen"].ToString();
                            dr["NgayBatDau"] = dt.Rows[i]["NgayBatDau"].ToString();
                            dr["NgayKetThuc"] = dt.Rows[i]["NgayKetThuc"].ToString();
                            dr["Openning"] = dt.Rows[i]["Openning"].ToString();
                            dr["Checked"] = "false";
                            tb.Rows.Add(dr);
                        }
                    }
                }

                if (ds.Tables.Count > 2)
                {
                    dt = new DataTable();
                    dt = ds.Tables[2];
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            dr = tb.NewRow();
                            dr["DotDKUID"] = dt.Rows[i]["DotDKUID"].ToString();
                            dr["DotDKID"] = dt.Rows[i]["DotDKID"].ToString();
                            dr["DotDKTen"] = dt.Rows[i]["DotDKTen"].ToString();
                            dr["NgayBatDau"] = dt.Rows[i]["NgayBatDau"].ToString();
                            dr["NgayKetThuc"] = dt.Rows[i]["NgayKetThuc"].ToString();
                            dr["Openning"] = dt.Rows[i]["Openning"].ToString();
                            dr["Checked"] = "false";
                            tb.Rows.Add(dr);
                        }
                    }
                }

            }


            if (tb.Rows.Count < 1)
            {
                lst_Danh_Sach_Dot_Dang_Ky.DataSource = null;
                lst_Danh_Sach_Dot_Dang_Ky.DataBind();
                return;
            }

            tb.Rows[0]["Checked"] = "true";
            
            lst_Danh_Sach_Dot_Dang_Ky.DataSource = tb;
            lst_Danh_Sach_Dot_Dang_Ky.DataBind();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lst_Danh_Sach_Dot_Dang_Ky_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                return;
            RadioButton rdb = (RadioButton)e.Item.FindControl("rad_DotDKID");
            string script = "SetSingleRadioButton(this)";
            rdb.Attributes.Add("onclick", script);
            string Opening = rdb.GroupName.Trim().ToUpper();

            Label lbl_DotDKID = (Label)e.Item.FindControl("lbl_DotDKID");

            if (Opening != "Y")
            {
                lbl_DotDKID.Style.Add("font-style", "italic");
                
                if (Opening == "N")
                {
                    lbl_DotDKID.Style.Add("color", "gray");
                    lbl_DotDKID.ToolTip += " : đã hết hạn đăng ký";
                }
                else
                {
                    lbl_DotDKID.Style.Add("color", "green");
                    lbl_DotDKID.ToolTip += " : chưa đến hạn đăng ký";
                }
            }

            if (rdb.Checked)
            {
                hid_LockKQDK.Value = rdb.GroupName;
                if (rdb.GroupName != "Y")
                {
                    btnConfirm.Enabled = false;
                    btnResotre.Enabled = false;
                }
                LoadDefault(rdb.ToolTip.Trim().ToUpper());
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rad_DotDKID_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (string.IsNullOrEmpty(rdb.ToolTip.Trim()))
            {
                return;
            }
            hid_LockKQDK.Value = rdb.GroupName;
            if (rdb.GroupName != "Y")
            {
                btnConfirm.Enabled = false;
                btnResotre.Enabled = false;
            }
            else
            {
                btnConfirm.Enabled = true;
                btnResotre.Enabled = true;
            }
            LoadDefault(rdb.ToolTip.Trim().ToUpper());
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="DotDKID"></param>
        private void LoadDefault(string DotDKID)
        {
            try
            {
                IsubDKDot IDDK = new subDKDot();
                string DotDKUIDs = IDDK.sub_GetDotDKUIDByDotDKID(DotDKID, ref err);
                if (string.IsNullOrEmpty(DotDKUIDs))
                {
                    Msg("Lỗi không tìm được thông tin đợt");
                    return;
                }
                DotDKUID = DotDKUIDs;

                //if (!CheckedRegister())
                //{
                //    Msg("Bạn không được cấp phép tham gia đợt này!");
                //    return;
                //}

                ClearEnable();
                Session["Buffer"] = null;
                LoadInfo();
                LoadLDKCT(DotDKUID);

                Load_Danh_Sach_Mon_Hoc_Mo();
                Load_TKB_MHoc_Mo_DK("", "");
                Load_Ket_Qua_Dang_Ky();
                /*-----------------*/
                if (SessionInfo.GetInfoDotDK(DotDKUID).KhoaKetQuaDK)
                {
                    btnConfirm.Enabled = false;
                    btnResotre.Enabled = false;
                    Msg("Tại thời điểm này kết quả đăng ký của bạn đã tạm khoá không cho hiệu chỉnh!");
                }

                /***********************AAO Url************************************************/
                IsubDKDotAAOUrl inter2 = new subDKDotAAOUrl();
                DataTable dt = inter2.sub_GetsubDKDotAAOUrl(DotDKUID, ref err);
                if (dt.Rows.Count > 0)
                {
                    lbl_TB.Visible = true;
                    lst_AAO.DataSource = dt;
                    lst_AAO.DataBind();
                    lbl_NoneAAO.Visible = false;
                }
                else
                {
                    lbl_TB.Visible = false;
                    lst_AAO.DataSource = null;
                    lst_AAO.DataBind();
                    lbl_NoneAAO.Visible = true;
                }
                inter2 = null;
                return;
            }
            catch (Exception ex)
            {
                err = ex.Message;
            }
            Msg(err);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rad_NhomHoc_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            _lbNhomHoc1.Text = rdb.Text;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        protected bool CheckedRegister()
        {
            try
            {
                IsubDKDot IDotDK = new subDKDot();
                return IDotDK.sub_subDKDotCheckedRegister(SessionInfo.GetInfoHocVienLogined.HocVienUID, DotDKUID, ref err);
            }
            catch
            {
                
            }
            return false;
        }
        /// <summary>
        /// 
        /// </summary>
        private void LoadInfo()
        {
            if (string.IsNullOrEmpty(DotDKUID))
            {
                return;
            }
            SessionInfo.GetInfoDotDK(DotDKUID);
            //if (SessionInfo.GetInfoDotDK(DotDKUID).DSMonHocYN)
            //{
            //    txt_SubjectCode.Enabled = false;
            //    Button1.Enabled = false;
            //}
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="DDKID"></param>
        private void LoadLDKCT(string DDKID)
        {
            if (!string.IsNullOrEmpty(DDKID))
            {
                IsubDKDot inter = new subDKDot();
                DataTable dt = inter.sub_GetsubDKDotChiTietByDotDKID(DDKID, ref err);
                if (dt.Rows.Count > 0)
                {
                    //SessionInfo info = new SessionInfo();
                    StringBuilder sb_LichCacKhoa = new StringBuilder();
                    sb_LichCacKhoa.Append("<div class='row'><div class='cell'>Lịch trình đăng ký:</div></div>");
                    sb_LichCacKhoa.Append("<table border='0' width='560xp'>");
                    sb_LichCacKhoa.Append("<thead>");
                    sb_LichCacKhoa.Append("<tr>");
                    if (dt.Rows[0]["TypeShow"].ToString() == "0")
                    {
                        sb_LichCacKhoa.Append("<td class='header_item_list' style='width:200px'>Tên khoa</td><td class='header_item_list' style='width:60px'>Hệ</td><td class='header_item_list'>Bắt đầu</td><td class='header_item_list'>Kết thúc</td>");
                    }
                    else if (dt.Rows[0]["TypeShow"].ToString() == "1")
                    {
                        sb_LichCacKhoa.Append("<td class='header_item_list' style='width:280px'>Tên khoa</td><td class='header_item_list'>Bắt đầu</td><td class='header_item_list'>Kết thúc</td>");
                    }
                    else
                    {
                        sb_LichCacKhoa.Append("<td class='header_item_list' style='width:280px'>Hệ</td><td class='header_item_list'>Bắt đầu</td><td class='header_item_list'>Kết thúc</td>");
                    }
                    sb_LichCacKhoa.Append("</tr></thead>");
                    sb_LichCacKhoa.Append(Environment.NewLine);
                    sb_LichCacKhoa.Append("<tbody style='line-height:25px'>");
                    int j = 1;
                    foreach (DataRow r_LichKH in dt.Rows)
                    {
                        if (j % 2 == 0)
                        {
                            sb_LichCacKhoa.Append("<tr style=\"background-color:#f0f8ff;\">");
                        }
                        else
                        {
                            sb_LichCacKhoa.Append("<tr>");
                        }

                        /*===================Set Color=======================*/
                        if (dt.Rows[0]["TypeShow"].ToString() == "0")
                        {
                            if ((r_LichKH["HeUID"].ToString().ToLower() == SessionInfo.GetInfoHocVienLogined.HeUID.ToLower()) && (r_LichKH["KhoaUID"].ToString().ToLower() == SessionInfo.GetInfoHocVienLogined.KhoaUID.ToLower()))
                            {
                                sb_LichCacKhoa.Append("<td style=\"color:Blue; font-weight:bold\">" + r_LichKH["FacultyName"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + r_LichKH["TypeOfTrainingCode"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + DateTime.Parse(r_LichKH["NgayBatDau"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + DateTime.Parse(r_LichKH["NgayKetThuc"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                            }
                            else
                            {
                                sb_LichCacKhoa.Append("<td>" + r_LichKH["FacultyName"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + r_LichKH["TypeOfTrainingCode"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + DateTime.Parse(r_LichKH["NgayBatDau"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + DateTime.Parse(r_LichKH["NgayKetThuc"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                            }
                        }
                        else if (dt.Rows[0]["TypeShow"].ToString() == "1")
                        {
                            if (r_LichKH["KhoaUID"].ToString().ToLower() == SessionInfo.GetInfoHocVienLogined.KhoaUID.ToLower())
                            {
                                sb_LichCacKhoa.Append("<td style=\"color:Blue; font-weight:bold\">" + r_LichKH["FacultyName"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + DateTime.Parse(r_LichKH["NgayBatDau"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + DateTime.Parse(r_LichKH["NgayKetThuc"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                            }
                            else
                            {
                                sb_LichCacKhoa.Append("<td>" + r_LichKH["FacultyName"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + DateTime.Parse(r_LichKH["NgayBatDau"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + DateTime.Parse(r_LichKH["NgayKetThuc"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                            }
                        }
                        else
                        {
                            if (r_LichKH["HeUID"].ToString().ToLower() == SessionInfo.GetInfoHocVienLogined.HeUID.ToLower())
                            {
                                sb_LichCacKhoa.Append("<td style=\"color:Blue; font-weight:bold\">" + r_LichKH["TypeOfTrainingName"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + DateTime.Parse(r_LichKH["NgayBatDau"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\" style=\"color:Blue; font-weight:bold\">" + DateTime.Parse(r_LichKH["NgayKetThuc"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                            }
                            else
                            {
                                sb_LichCacKhoa.Append("<td>" + r_LichKH["TypeOfTrainingName"].ToString() + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + DateTime.Parse(r_LichKH["NgayBatDau"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                                sb_LichCacKhoa.Append("<td align=\"center\">" + DateTime.Parse(r_LichKH["NgayKetThuc"].ToString()).ToString("dd/MM/yyyy HH:mm") + "</td>");
                            }
                        }

                        sb_LichCacKhoa.Append("</tr>");
                        sb_LichCacKhoa.Append(Environment.NewLine);
                        j++;
                    }
                    sb_LichCacKhoa.Append("</tbody>");
                    sb_LichCacKhoa.Append("</table>");
                    if (string.IsNullOrEmpty(sb_LichCacKhoa.ToString()))
                    {
                        return;
                    }
                    lbl_LDKCT.Text = sb_LichCacKhoa.ToString();
                }
                else
                {
                    lbl_LDKCT.Text = "Chưa có lịch đăng ký!";
                }
            }
        }
        #endregion

        #region Danh_Sach_Mon_Hoc_Mo_Dang_Ky
        private void Load_Danh_Sach_Mon_Hoc_Mo()
        {
            try
            {
                if (string.IsNullOrEmpty(DotDKUID))
                {
                    return;
                }
                DataTable dt = null;
                IsubDKDot ISub = new subDKDot();
                dt = ISub.sub_GetListMonHocDangKyMoiByDotDKUID(SessionInfo.GetInfoHocVienLogined.HocVienUID, DotDKUID, ref err);
                DataView dv = new DataView(dt);
                dv.Sort = "SubjectName ASC";
                dt = dv.ToTable();
                lst_Subjects.DataSource = dt;
                lst_Subjects.DataBind();
                ISub = null;
                dv = null;
                dt = null;
            }
            catch (Exception ex)
            {
                err = ex.Message;
            }
            if (err != "")
            {
                Msg(err);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="SubjectID"></param>
        private void CheckSubject(string SubjectID)
        {
            try
            {
                _lbNhomHoc1.Text = "";
                Load_TKB_MHoc_Mo_DK("", "");
                ClearEnable();
                if (hid_LockKQDK.Value == "N")
                {
                    Msg("Hiện tại đợt đăng ký này đã hết hạn đăng ký");
                    return;
                }

                if (hid_LockKQDK.Value == "B")
                {
                    Msg("Hiện tại đợt đăng ký này chưa đến hạn đăng ký");
                    return;
                }
                /*----------------------------------------*/
                IsubDKDot ISub = new subDKDot();
                DataTable dt = ISub.sub_CheckSubject(SessionInfo.GetInfoHocVienLogined.HocVienUID, DotDKUID, SubjectID, ref err);
                if (dt.Rows.Count > 0)
                {
                    string Result = dt.Rows[0]["Result"].ToString();
                    switch (Result)
                    {
                        case "E": Msg("Môn học bạn chọn đã có trong kết quả đăng ký!"); break;
                        case "C": Msg("Môn học bạn chọn bị cấm đăng ký!"); break;
                        case "H": Msg("Môn học bạn chọn không thuộc hệ đào tạo của bạn!"); break;
                        case "B": Msg("Đợt đăng ký này chỉ cho phép bạn đăng ký các môn bắt buộc!"); break;
                        case "S":
                            {
                                if (SessionInfo.GetInfoDotDK(DotDKUID).MonHocTKBYN)
                                {
                                    Msg("Đợt đăng ký này chỉ cho đăng ký các môn có thời khóa biểu"); return;
                                }
                                _lbMonHocID.Text = dt.Rows[0]["SubjectCode"].ToString();
                                _lbMonHocTen.Text = dt.Rows[0]["SubjectName"].ToString();
                                hid_SubjectIDSelect.Value = dt.Rows[0]["SubjectID"].ToString();
                                addItem.Visible = true;
                            }; break;
                        case "T":
                            {
                                _lbMonHocID.Text = dt.Rows[0]["SubjectCode"].ToString();
                                _lbMonHocTen.Text = dt.Rows[0]["SubjectName"].ToString();
                                hid_SubjectIDSelect.Value = dt.Rows[0]["SubjectID"].ToString();
                                addItem.Visible = true;
                                /*----------------------------------*/
                                Load_TKB_MHoc_Mo_DK(DotDKUID, hid_SubjectIDSelect.Value);
                            }; break;
                        default: Msg("Môn học này không được mở"); break;
                    }
                    ISub = null;
                    dt = null;
                    return;
                }
                Msg("Môn học này không được mở");
                return;
            }
            catch (Exception ex)
            {
                err = ex.Message;
            }
            if (err != "")
            {
                Msg(err);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnTraMonHoc_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txt_SubjectCode.Text.Trim()))
            {
                Msg("Nhập mã số môn học cần tra cứu");
                return;
            }
            CheckSubject(txt_SubjectCode.Text.Trim());
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SubjectName_Click(object sender, EventArgs e)
        {
            LinkButton SubjectName = (LinkButton)sender;
            CheckSubject(SubjectName.CommandArgument);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lst_Subjects_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            try
            {
                if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                    return;
                HiddenField hid_OptionCheckBatBuoc = (HiddenField)e.Item.FindControl("hid_OptionCheckBatBuoc");
                HiddenField hid_OptionCheckTKB = (HiddenField)e.Item.FindControl("hid_OptionCheckTKB");
                LinkButton hpy_SubjectName = (LinkButton)e.Item.FindControl("hpy_SubjectName");
                if (hid_OptionCheckBatBuoc != null)
                {
                    Image img_BatBuoc = (Image)e.Item.FindControl("img_BatBuoc");
                    if (string.IsNullOrEmpty(hid_OptionCheckBatBuoc.Value) || hid_OptionCheckBatBuoc.Value == "K")
                    {
                        img_BatBuoc.Visible = false;
                    }
                    else
                    {
                        img_BatBuoc.Visible = true;
                    }
                }
            }
            catch
            {
            }
        }
        #endregion

        #region TKB_Mon_Hoc_Mo_Dang_Ky
        /// <summary>
        /// 
        /// </summary>
        /// <param name="DotDKUID"></param>
        /// <param name="MonHocUID"></param>
        private void Load_TKB_MHoc_Mo_DK(string DotDKUID, string MonHocUID)
        {
            try
            {
                if (string.IsNullOrEmpty(DotDKUID.Trim()) || string.IsNullOrEmpty(MonHocUID.Trim()))
                {
                    lst_TKB_Mon_Hoc.DataSource = null;
                    lst_TKB_Mon_Hoc.DataBind();
                    updateitem.Visible = false;
                    return;
                }

                IsubDKDot inter = new subDKDot();
                DataTable dtTKBMonHoc = inter.sub_GetsubDotDKTKBMonHocByMonHocID(DotDKUID, MonHocUID,SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
                if (dtTKBMonHoc.Rows.Count < 1)
                {
                    lst_TKB_Mon_Hoc.DataSource = null;
                    lst_TKB_Mon_Hoc.DataBind();
                    updateitem.Visible = false;
                    return;
                }

                lst_TKB_Mon_Hoc.DataSource = dtTKBMonHoc;
                lst_TKB_Mon_Hoc.DataBind();
                inter = null;
                dtTKBMonHoc = null;
                return;
            }
            catch (Exception ex)
            {
                err = ex.Message;
            }
            Msg("Lỗi đọc dữ liệu thời khóa biểu môn học");
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lst_TKB_Mon_Hoc_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                return;
            RadioButton rdb = (RadioButton)e.Item.FindControl("rdb_Chon_Nhom");
            string script = "SetSingleRadioButton(this)";
            rdb.Attributes.Add("onclick", script);
            /*-------------------*/
            if (!string.IsNullOrEmpty(_lbNhomHoc1.Text.Trim()))
            {
                if (rdb.ToolTip.Trim().ToUpper() == _lbNhomHoc1.Text.Trim().ToUpper())
                {
                    rdb.Checked = true;
                }
            }
            /*------------------*/
            Label lbl_Si_So = (Label)e.Item.FindControl("lbl_Si_So");
            Label lbl_So_Dang_Ky = (Label)e.Item.FindControl("lbl_So_Dang_Ky");
            if (!string.IsNullOrEmpty(lbl_Si_So.Text.Trim()) && !string.IsNullOrEmpty(lbl_So_Dang_Ky.Text.Trim()))
            {
                if (int.Parse(lbl_So_Dang_Ky.Text.Trim()) >= int.Parse(lbl_Si_So.Text.Trim()))
                {
                    lbl_So_Dang_Ky.ForeColor = System.Drawing.Color.Red;
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rdb_Chon_Nhom_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            _lbNhomHoc1.Text = rdb.ToolTip;
        }
        #endregion

        #region Dang_Ky_Mon_Hoc
        /// <summary>
        /// 
        /// </summary>
        private void IsNotNullSessionMain()
        {
            if (Session["Buffer"] != null)
            {
                Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> Dic_Buffer = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();
                Dic_Buffer = (Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>)Session["Buffer"];
                if (Dic_Buffer.ContainsKey(DotDKUID))
                {
                    List<Obj_subKQDangKyMonHocBuffer> Lst_Buffer = new List<Obj_subKQDangKyMonHocBuffer>();
                    Lst_Buffer = Dic_Buffer[DotDKUID];
                    if (Lst_Buffer != null)
                    {
                        /*********************************************************************************/
                        lst_Ket_Qua_Dang_Ky.DataSource = Lst_Buffer;
                        lst_Ket_Qua_Dang_Ky.DataBind();

                        Dic_Buffer = null;
                        Lst_Buffer = null;
                    }
                    else
                    {
                        /*=================Goi lai tu ket qua dang ky===================*/
                        Session["Buffer"] = null;
                        Load_Ket_Qua_Dang_Ky();
                    }
                }
            }
            else
            {
                /*=================Goi lai tu ket qua dang ky===================*/
                Session["Buffer"] = null;
                Load_Ket_Qua_Dang_Ky();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private void Load_Ket_Qua_Dang_Ky()
        {
            try
            {
                if (Session["Buffer"] != null)
                {
                    /**********Load Buffer from session************/
                    IsNotNullSessionMain();
                    return;
                }
                /*-------------Load Buffer from DB-------------------*/
                Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> Dic_Burffer = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();
                List<Obj_subKQDangKyMonHocBuffer> Lst_Burffer = new List<Obj_subKQDangKyMonHocBuffer>();
                IsubKQDangKyMonHocBuffer iBuffer = new subKQDangKyMonHocBuffer();
                Obj_subKQDangKyMonHocBuffer buffer = null;
                DataTable dtBuffer = iBuffer.sub_GetsubKQDangKyMonHocBuffer(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
                /*-------------Co Buffer----------------------*/
                if (dtBuffer.Rows.Count > 0)
                {
                    for (int i = 0; i < dtBuffer.Rows.Count; i++)
                    {
                        #region Load Table

                        buffer = new Obj_subKQDangKyMonHocBuffer();
                        buffer.MonHocID = dtBuffer.Rows[i]["MonHocID"].ToString();
                        buffer.NhomHoc1 = dtBuffer.Rows[i]["NhomHoc1"].ToString();
                        buffer.MonHocTen = dtBuffer.Rows[i]["MonHocTen"].ToString();
                        buffer.KetQua = dtBuffer.Rows[i]["KetQua"].ToString();
                        buffer.BaiTapID = dtBuffer.Rows[i]["BaiTapID"].ToString();
                        buffer.NhomBaiTap = dtBuffer.Rows[i]["NhomBaiTap"].ToString();
                        buffer.NhomHoc2 = dtBuffer.Rows[i]["NhomHoc2"].ToString();
                        buffer.DieuChinhID = dtBuffer.Rows[i]["DieuChinhID"].ToString();
                        buffer.XuLy = dtBuffer.Rows[i]["XuLy"].ToString();
                        buffer.GhiChu = dtBuffer.Rows[i]["GhiChu"].ToString();
                        buffer.MonHocUID = dtBuffer.Rows[i]["MonhocUID"].ToString();
                        buffer.KhoaMonHocYN = dtBuffer.Rows[i]["KhoaMHYN"].ToString();
                        buffer.ChuaXacNhan = dtBuffer.Rows[i]["ChuaXacNhan"].ToString();
                        buffer.ChuaCoTKB = bool.Parse(dtBuffer.Rows[i]["ChuaCoTKB"].ToString());

                        Lst_Burffer.Add(buffer);

                        #endregion
                    }
                }
                else
                {
                    /*=======Buffer null - Load From KQ=============*/
                    IsubKQDangKyMonHoc inter = new subKQDangKyMonHoc();
                    DataTable dt = inter.sub_GetsubKQDangKyMonHoc(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);

                    if (dt.Rows.Count > 0)
                    {
                        /**************************************/
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            #region Insert buffer
                            Obj_subKQDangKyMonHocBuffer one = new Obj_subKQDangKyMonHocBuffer();
                            one.DotDKUID = DotDKUID;
                            one.HocVienUID = SessionInfo.GetInfoHocVienLogined.HocVienUID;
                            one.MonHocUID = dt.Rows[i]["MonHocUID"].ToString();
                            one.MonHocID = dt.Rows[i]["MonHocID"].ToString();
                            one.NhomHoc1 = dt.Rows[i]["NhomHoc1"].ToString();
                            one.MonHocTen = dt.Rows[i]["MonHocTen"].ToString();
                            one.KetQua = dt.Rows[i]["KetQua"].ToString();
                            one.BaiTapID = dt.Rows[i]["BaiTapID"].ToString();
                            one.NhomBaiTap = dt.Rows[i]["NhomBaiTap"].ToString();
                            one.NhomHoc2 = dt.Rows[i]["NhomHoc2"].ToString();
                            one.DieuChinhID = dt.Rows[i]["DieuChinhID"].ToString();
                            one.XuLy = dt.Rows[i]["TinhTrang"].ToString();
                            one.GhiChu = dt.Rows[i]["KetQuaLyDo"].ToString();
                            one.KhoaMonHocYN = dt.Rows[i]["KhoaMonHocYN"].ToString();
                            one.DieuChinhID2 = dt.Rows[i]["DieuChinhID2"].ToString();

                            if (!iBuffer.sub_AddsubKQDangKyMonHocBuffer(one, ref err))
                            {
                                return;
                            }

                            #endregion
                        }

                        dtBuffer = iBuffer.sub_GetsubKQDangKyMonHocBuffer(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);

                        /*---------------Show Buffer New insert----------------------------------*/

                        for (int i = 0; i < dtBuffer.Rows.Count; i++)
                        {
                            #region Load Table
                            buffer = new Obj_subKQDangKyMonHocBuffer();
                            string vitri = (i + 1).ToString();
                            buffer.MonHocID = dtBuffer.Rows[i]["MonHocID"].ToString();
                            buffer.NhomHoc1 = dtBuffer.Rows[i]["NhomHoc1"].ToString();
                            buffer.MonHocTen = dtBuffer.Rows[i]["MonHocTen"].ToString();
                            buffer.KetQua = dtBuffer.Rows[i]["KetQua"].ToString();
                            buffer.BaiTapID = dtBuffer.Rows[i]["BaiTapID"].ToString();
                            buffer.NhomBaiTap = dtBuffer.Rows[i]["NhomBaiTap"].ToString();
                            buffer.NhomHoc2 = dtBuffer.Rows[i]["NhomHoc2"].ToString();
                            buffer.DieuChinhID = dtBuffer.Rows[i]["DieuChinhID"].ToString();
                            buffer.XuLy = dtBuffer.Rows[i]["XuLy"].ToString();
                            buffer.GhiChu = dtBuffer.Rows[i]["GhiChu"].ToString();
                            buffer.MonHocUID = dtBuffer.Rows[i]["MonhocUID"].ToString();
                            buffer.KhoaMonHocYN = dtBuffer.Rows[i]["KhoaMHYN"].ToString();
                            buffer.ChuaXacNhan = dtBuffer.Rows[i]["ChuaXacNhan"].ToString();
                            buffer.ChuaCoTKB = bool.Parse(dtBuffer.Rows[i]["ChuaCoTKB"].ToString());
                            Lst_Burffer.Add(buffer);
                            #endregion
                        }

                    }
                    else
                    {
                        Session["Buffer"] = null;
                        Lst_Burffer = null;
                        Dic_Burffer = null;
                        buffer = null;
                        lst_Ket_Qua_Dang_Ky.DataSource = Lst_Burffer;
                        lst_Ket_Qua_Dang_Ky.DataBind();
                        TKB_Hoc();
                        return;
                    }
                }

                if (Dic_Burffer.ContainsKey(DotDKUID))
                {
                    Dic_Burffer[DotDKUID] = Lst_Burffer;
                }
                else
                {
                    Dic_Burffer.Add(DotDKUID, Lst_Burffer);
                }

                lst_Ket_Qua_Dang_Ky.DataSource = Lst_Burffer;
                lst_Ket_Qua_Dang_Ky.DataBind();
                Session["Buffer"] = Dic_Burffer;
                TKB_Hoc();
                Lst_Burffer = null;
                Dic_Burffer = null;
                buffer = null;

            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lst_Ket_Qua_Dang_Ky_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                return;
            Label lbl_Xu_Ly = (Label)e.Item.FindControl("lbl_Xu_Ly");
            Label lbl_Dieu_Chinh = (Label)e.Item.FindControl("lbl_Dieu_Chinh");
            Label lbl_Ma_Mon_Hoc = (Label)e.Item.FindControl("lbl_Ma_Mon_Hoc");
            ImageButton bnt_Huy_MonHoc = (ImageButton)e.Item.FindControl("bnt_Huy_MonHoc");
            LinkButton bnt_Hieu_Chinh_Mon_Hoc = (LinkButton)e.Item.FindControl("bnt_Hieu_Chinh_Mon_Hoc");
            ImageButton bnt_Ghi_Chu = (ImageButton)e.Item.FindControl("bnt_Ghi_Chu");

            string tinhtrang = lbl_Dieu_Chinh.ToolTip.Trim().ToUpper();
            string xuly = lbl_Xu_Ly.ToolTip.Trim().ToUpper();
            string khoaYN = lbl_Ma_Mon_Hoc.ToolTip.Trim().ToUpper();
            string ChuaXacNhan = bnt_Hieu_Chinh_Mon_Hoc.CommandName.Trim();
            string ghichu = bnt_Ghi_Chu.ToolTip.Trim();

            if (!SessionInfo.GetInfoDotDK(DotDKUID).KhoaKetQuaDK && hid_LockKQDK.Value == "Y")/*Đang mo cho HC-BS*/
            {
                if ((tinhtrang == "HU" || tinhtrang == "HH" || tinhtrang == "BH") && xuly != "RE")
                {
                    bnt_Huy_MonHoc.ToolTip = "Khôi phục hủy";
                    bnt_Huy_MonHoc.CommandName = "RH";
                    bnt_Huy_MonHoc.ImageUrl = "~/images/undeleteicon.png";
                }
                else if ((tinhtrang == "BS" || tinhtrang == "HC") && khoaYN != "KX" && xuly != "RE")
                {
                    bnt_Huy_MonHoc.ToolTip = "Hủy môn học";
                    bnt_Huy_MonHoc.ImageUrl = "~/images/deleteicon.png";
                    bnt_Huy_MonHoc.CommandName = "HU";
                }
                else
                {
                    if (khoaYN == "KX" || xuly == "RE")
                    {
                        bnt_Huy_MonHoc.ToolTip = "Môn học đã khóa không cho hiệu chỉnh";
                        bnt_Huy_MonHoc.ImageUrl = "~/images/lockicon.png";
                        bnt_Huy_MonHoc.CommandName = "KX";
                        bnt_Huy_MonHoc.Enabled = false;
                    }
                }
            }
            else
            {
                bnt_Huy_MonHoc.ToolTip = "Môn học đã khóa không cho hiệu chỉnh";
                bnt_Huy_MonHoc.ImageUrl = "~/images/lockicon.png";
                bnt_Huy_MonHoc.CommandName = "KX";
                bnt_Huy_MonHoc.Enabled = false;
            }
            /*==========================================================================*/
            if (ChuaXacNhan != "0")
            {
                bnt_Hieu_Chinh_Mon_Hoc.ForeColor = System.Drawing.Color.Red;
                bnt_Hieu_Chinh_Mon_Hoc.ToolTip = "Môn học này chưa xác nhận đăng ký, vui lòng nhấn nút xác nhận đăng ký phía dưới để hoàn thành việc đăng ký ./.";
            }
            /*==========================================================================*/
            if (!SessionInfo.GetInfoDotDK(DotDKUID).KhoaKetQuaDK && hid_LockKQDK.Value == "Y")/*Đang mo cho HC-BS*/
            {
                if (xuly == "RE" || khoaYN == "KX" || khoaYN == "KH" || tinhtrang == "HU" || tinhtrang == "HH" || tinhtrang == "BH")
                {
                    bnt_Hieu_Chinh_Mon_Hoc.Enabled = false;
                    if (khoaYN == "KX" || khoaYN == "KH")
                    {
                        bnt_Hieu_Chinh_Mon_Hoc.CssClass = "danhmonhocdk_mhbikhoa";
                        bnt_Hieu_Chinh_Mon_Hoc.ForeColor = System.Drawing.Color.Gray;
                    }
                    else if (tinhtrang.ToUpper() == "HU" || tinhtrang.ToUpper() == "HH" || tinhtrang.ToUpper() == "BH")
                    {
                        bnt_Hieu_Chinh_Mon_Hoc.CssClass = "danhmonhocdk_mhbikhoa";
                        bnt_Hieu_Chinh_Mon_Hoc.ForeColor = System.Drawing.Color.Red;
                    }
                    else
                    {
                        bnt_Hieu_Chinh_Mon_Hoc.CssClass = "danhmonhocdk_mhbikhoa";
                        bnt_Hieu_Chinh_Mon_Hoc.ForeColor = System.Drawing.Color.Green;
                    }
                }
            }
            else
            {
                bnt_Hieu_Chinh_Mon_Hoc.Enabled = false;
                bnt_Hieu_Chinh_Mon_Hoc.CssClass = "danhmonhocdk_mhbikhoa";
                bnt_Hieu_Chinh_Mon_Hoc.ForeColor = System.Drawing.Color.Gray;
            }
            /*==========================================================================*/
            if (string.IsNullOrEmpty(ghichu))
            {
                bnt_Ghi_Chu.Visible = false;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void bnt_Huy_MonHoc_Click(object sender, ImageClickEventArgs e)
        {
            ImageButton bnt_Huy_Mon_Hoc = (ImageButton)sender;
            if (bnt_Huy_Mon_Hoc.CommandName == "HU")
            {
                Huy_Mon_Hoc(bnt_Huy_Mon_Hoc.CommandArgument);
            }
            else if (bnt_Huy_Mon_Hoc.CommandName == "RH")
            {
                Bo_Huy_Mon_Hoc(bnt_Huy_Mon_Hoc.CommandArgument);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void bnt_Hieu_Chinh_Mon_Hoc_Click(object sender, EventArgs e)
        {
            try
            {
                ClearEnable();
                LinkButton bnt_Hieu_Chinh_Mon_Hoc = (LinkButton)sender;

                if (!String.IsNullOrEmpty(bnt_Hieu_Chinh_Mon_Hoc.CommandArgument))
                {
                    if (Session["Buffer"] == null)
                    {
                        Load_Ket_Qua_Dang_Ky();
                    }

                    IsubDKDot ISub = new subDKDot();
                    //DataTable dt = null;
                    Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> Dic_Buffer = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();
                    Dic_Buffer = (Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>)Session["Buffer"];

                    if (Dic_Buffer.ContainsKey(DotDKUID))
                    {
                        List<Obj_subKQDangKyMonHocBuffer> Lst_Buffer = Dic_Buffer[DotDKUID];
                        for (int i = 0; i < Lst_Buffer.Count; i++)
                        {
                            string monhocUID = Lst_Buffer[i].MonHocUID;
                            if (bnt_Hieu_Chinh_Mon_Hoc.CommandArgument == monhocUID)
                            {
                                updateitem.CommandArgument = monhocUID;
                                _lbMonHocID.Text = Lst_Buffer[i].MonHocID;
                                _lbNhomHoc1.Text = Lst_Buffer[i].NhomHoc1;
                                _lbMonHocTen.Text = Lst_Buffer[i].MonHocTen;
                                hid_SubjectIDSelect.Value = monhocUID;
                                addItem.Visible = false;
                                updateitem.Visible = true;
                                //dt = ISub.sub_CheckSubject(SessionInfo.GetInfoHocVienLogined.HocVienUID, DotDKUID, monhocUID, ref err);
                                //if (dt.Rows.Count > 0)
                                //{
                                //    hid_NhomHocCam.Value = dt.Rows[0]["GroupName"].ToString();
                                //}
                                Load_TKB_MHoc_Mo_DK(DotDKUID, monhocUID);
                                break;
                            }
                        }
                        Lst_Buffer = null;
                    }
                    //_ecboxNhomHoc2.Items.Clear();
                    ISub = null;
                    //dt = null;
                    Dic_Buffer = null;
                }
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void bnt_Ghi_Chu_Click(object sender, ImageClickEventArgs e)
        {
            ImageButton bnt_Ghi_Chu = (ImageButton)sender;
            Msg(bnt_Ghi_Chu.ToolTip);
        }

        #region Dang Ky Bo Sung
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void addItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (SessionInfo.GetInfoDotDK(DotDKUID).KhoaKetQuaDK)
                {
                    Msg("Hiện tại kết quả đăng ký đang tạm khóa, không cho phép bổ sung môn mới");
                    return;
                }
                if (hid_LockKQDK.Value == "N")
                {
                    Msg("Hiện tại đợt đăng ký này đã hết hạn đăng ký");
                    return;
                }

                if (hid_LockKQDK.Value == "B")
                {
                    Msg("Hiện tại đợt đăng ký này chưa đến hạn đăng ký");
                    return;
                }

                if (string.IsNullOrEmpty(hid_SubjectIDSelect.Value))
                {
                    Msg("Chọn môn học để bổ sung");
                    return;
                }

                if (lst_TKB_Mon_Hoc.Items.Count > 0)
                {
                    if (string.IsNullOrEmpty(_lbNhomHoc1.Text.Trim()))
                    {
                        Msg("Bạn chưa chọn nhóm môn học");
                        return;
                    }
                }

                //if (!string.IsNullOrEmpty(hid_NhomHocCam.Value))
                //{
                //    if (_lbNhomHoc1.Text.Trim().ToUpper() == hid_NhomHocCam.Value.Trim().ToUpper())
                //    {
                //        Msg("Nhóm học bạn chọn bị cấm đăng ký");
                //        return;
                //    }
                //}

                /*=======Cap nhat lai Buffer========*/
                if (Session["Buffer"] == null)
                {
                    Load_Ket_Qua_Dang_Ky();
                }

                Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> Dic_Buffer = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();
                Dic_Buffer = (Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>)Session["Buffer"];
                List<Obj_subKQDangKyMonHocBuffer> Lst_Buffer = new List<Obj_subKQDangKyMonHocBuffer>();

                if (Dic_Buffer == null)
                {
                    Dic_Buffer = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();
                    Dic_Buffer.Add(DotDKUID, Lst_Buffer);
                }

                if (Dic_Buffer.ContainsKey(DotDKUID))
                {
                    Lst_Buffer = Dic_Buffer[DotDKUID];
                    if (Lst_Buffer != null)
                    {
                        #region Insert buffer
                        Obj_subKQDangKyMonHocBuffer one = new Obj_subKQDangKyMonHocBuffer();
                        IsubKQDangKyMonHocBuffer iBuffer = new subKQDangKyMonHocBuffer();
                        one.DotDKUID = DotDKUID;
                        one.HocVienUID = SessionInfo.GetInfoHocVienLogined.HocVienUID;
                        one.MonHocUID = hid_SubjectIDSelect.Value;
                        one.MonHocID = _lbMonHocID.Text.Trim().IndexOf(' ') > -1 ? _lbMonHocID.Text.Trim().Substring(0, _lbMonHocID.Text.Trim().IndexOf(' ')).ToUpper() : _lbMonHocID.Text.Trim().ToUpper();
                        one.NhomHoc1 = _lbNhomHoc1.Text.Trim().ToUpper();
                        one.MonHocTen = _lbMonHocTen.Text.Trim();
                        one.KetQua = "";
                        one.BaiTapID = "";
                        one.NhomBaiTap = "";
                        one.NhomHoc2 = "";
                        one.DieuChinhID = "BS";
                        one.XuLy = "RN";
                        one.GhiChu = "";
                        one.KhoaMonHocYN = "KM";
                        one.DieuChinhID2 = "";
                        
                        if (iBuffer.sub_AddsubKQDangKyMonHocBuffer(one, ref err))
                        {
                            Session["Buffer"] = null;
                            Load_Ket_Qua_Dang_Ky();
                            Msg("Môn học đã bổ sung, bạn kiểm tra lại danh sách môn học đã chọn!");
                        }
                        else
                        {
                            Msg("Không thể bổ sung môn học được" + err);
                        }

                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                err = ex.Message;
                Msg(ex.Message);
            }
        }
        #endregion

        #region Hieu Chinh Dang Ky
        protected void updateitem_Click(object sender, EventArgs e)
        {
            try
            {
                if (SessionInfo.GetInfoDotDK(DotDKUID).KhoaKetQuaDK)
                {
                    Msg("Hiện tại kết quả đăng ký đang tạm khóa, không cho phép hiệu chỉnh");
                    return;
                }

                if (hid_LockKQDK.Value == "N")
                {
                    Msg("Hiện tại đợt đăng ký đã hết hạn đăng ký!");
                    return;
                }

                if (hid_LockKQDK.Value == "B")
                {
                    Msg("Hiện tại đợt đăng ký chưa tới hạn đăng ký!");
                    return;
                }
                /*Co TKB yeu cau chon nhom*/

                if (lst_TKB_Mon_Hoc.Items.Count > 0)
                {
                    if (string.IsNullOrEmpty(_lbNhomHoc1.Text.Trim()))
                    {
                        Msg("Bạn chưa chọn nhóm môn học");
                        return;
                    }
                }

                /*Load lai buffer neu null*/
                if (Session["Buffer"] == null)
                {
                    Load_Ket_Qua_Dang_Ky();
                }


                if (!String.IsNullOrEmpty(hid_SubjectIDSelect.Value))
                {
                    Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> dic = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();

                    dic = (Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>)Session["Buffer"];

                    if (dic.ContainsKey(DotDKUID))
                    {
                        List<Obj_subKQDangKyMonHocBuffer> Lst_Buffer = dic[DotDKUID];
                        if (Lst_Buffer != null)
                        {
                            bool Changed = true;

                            for (int i = 0; i < Lst_Buffer.Count; i++)
                            {
                                if (Lst_Buffer[i].MonHocUID == hid_SubjectIDSelect.Value)
                                {
                                    if (_lbNhomHoc1.Text.Trim().ToUpper() == Lst_Buffer[i].NhomHoc1.ToUpper())
                                    {
                                        Changed = false;/*Khong co thay doi nhom*/
                                    }
                                    break;
                                }
                            }

                            if (!Changed)
                            {
                                if (lst_TKB_Mon_Hoc.Items.Count > 0)
                                {
                                    Msg("Bạn cần chọn nhóm đổi khác với nhóm bạn đã chọn trước khi hiệu chỉnh");
                                }
                                return;
                            }

                            //if (!string.IsNullOrEmpty(hid_NhomHocCam.Value))
                            //{
                            //    if (_lbNhomHoc1.Text.Trim().ToUpper() == hid_NhomHocCam.Value.Trim().ToUpper())
                            //    {
                            //        Msg("Nhóm học bạn chọn bị cấm đăng ký");
                            //        return;
                            //    }
                            //}

                            for (int i = 0; i < Lst_Buffer.Count; i++)
                            {
                                if (Lst_Buffer[i].MonHocUID == hid_SubjectIDSelect.Value)
                                {
                                    if (Lst_Buffer[i].DieuChinhID == "HU" || Lst_Buffer[i].DieuChinhID == "HH" || Lst_Buffer[i].DieuChinhID == "BH")
                                    {
                                        Msg("Môn học này đang ở trạng thái đã bị hủy, bạn cần phải bỏ hủy trước khi thực hiện hiệu chỉnh!");
                                        break;
                                    }
                                    else
                                    {
                                        string nhomdoi = _lbNhomHoc1.Text.ToUpper();
                                        IsubKQDangKyMonHocBuffer inter = new subKQDangKyMonHocBuffer();
                                        if (inter.sub_ModifysubKQDangKyMonHocBufferByNhomHoc(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, hid_SubjectIDSelect.Value, nhomdoi, ref err))
                                        {
                                            Session["Buffer"] = null;
                                        }
                                        Load_Ket_Qua_Dang_Ky();
                                        Msg("Môn học đã được hiệu chỉnh, Bạn xem lại danh sách môn học bạn đã đăng ký và thực hiện xác nhận trước khi rời khỏi dịch vụ");
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            Load_Ket_Qua_Dang_Ky();
                            Msg("Xuất hiện lỗi trong thao tác này, vui lòng thực hiện lại thao tác");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        #endregion

        #region Hủy môn học
        private void Huy_Mon_Hoc(string MonHocUID)
        {
            try
            {
                if (!String.IsNullOrEmpty(MonHocUID))
                {
                    /*Load lai buffer neu null*/
                    if (Session["Buffer"] == null)
                    {
                        Load_Ket_Qua_Dang_Ky();
                    }

                    Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> dic = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();

                    dic = (Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>)Session["Buffer"];

                    if (dic.ContainsKey(DotDKUID))
                    {
                        List<Obj_subKQDangKyMonHocBuffer> Lst_Buffer = dic[DotDKUID];
                        if (Lst_Buffer != null)
                        {
                            for (int i = 0; i < Lst_Buffer.Count; i++)
                            {
                                if (Lst_Buffer[i].MonHocUID == MonHocUID)
                                {
                                    if (Lst_Buffer[i].DieuChinhID == "RE")
                                    {
                                        Msg("Môn học này đang được xử lý, bạn không thể hủy");
                                    }
                                    else
                                    {
                                        IsubKQDangKyMonHocBuffer inter = new subKQDangKyMonHocBuffer();
                                        if (Lst_Buffer[i].ChuaXacNhan == "1")
                                        {
                                            if (inter.sub_DeletesubKQDangKyMonHocBufferByMonHocID(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, MonHocUID, ref err))
                                            {
                                                Session["Buffer"] = null;
                                                Load_Danh_Sach_Mon_Hoc_Mo();
                                                Load_TKB_MHoc_Mo_DK("", "");
                                                Load_Ket_Qua_Dang_Ky();
                                                Msg("Môn học bạn yêu hủy bỏ đã được hủy");
                                            }
                                            else
                                            {
                                                Msg("Môn học bạn yêu hủy bỏ không hủy được!");
                                            }
                                        }
                                        else
                                        {
                                            if (inter.sub_ModifysubKQDangKyMonHocBufferByHieuChinhID(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, MonHocUID, "HU", ref err))
                                            {
                                                Session["Buffer"] = null;
                                                Load_Danh_Sach_Mon_Hoc_Mo();
                                                Load_TKB_MHoc_Mo_DK("", "");
                                                Load_Ket_Qua_Dang_Ky();
                                                Msg("Môn học bạn yêu hủy bỏ đã được hủy\n Bạn cần nhấn xác nhận kết quả đăng ký trước khi rời khỏi dịch vụ!");
                                            }
                                            else
                                            {
                                                Msg("Môn học bạn yêu hủy bỏ không hủy được!");
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        #endregion

        #region Bỏ hủy môn học
        private void Bo_Huy_Mon_Hoc(string MonHocUID)
        {
            try
            {
                if (!String.IsNullOrEmpty(MonHocUID))
                {
                    IsubKQDangKyMonHocBuffer inter = new subKQDangKyMonHocBuffer();
                    if (inter.sub_ModifysubKQDangKyMonHocBufferByHieuChinhID(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, MonHocUID, "RD", ref err))
                    {
                        Session["Buffer"] = null;
                        Load_Danh_Sach_Mon_Hoc_Mo();
                        Load_TKB_MHoc_Mo_DK("", "");
                        Load_Ket_Qua_Dang_Ky();
                    }
                    Msg("Môn học đã được khôi phục lại trạng thái đăng ký - hãy nhấn xác nhận kết quả đăng ký (nếu chưa)");
                    inter = null;
                }
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        #endregion

        #endregion

        #region TKB_Hoc
        /// <summary>
        /// 
        /// </summary>
        private void TKB_Hoc()
        {
            try
            {
                lbl_TKBMHDK.Visible = false;
                lst_TKB_Hoc.DataSource = null;
                lst_TKB_Hoc.DataBind();

                if (Session["Buffer"] == null)
                {
                    return;
                }

                Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>> Dic_Buffer = new Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>();
                Dic_Buffer = (Dictionary<string, List<Obj_subKQDangKyMonHocBuffer>>)Session["Buffer"];

                if (Dic_Buffer == null || Dic_Buffer.Count < 1)
                {
                    Dic_Buffer = null;
                    return;
                }

                if (Dic_Buffer.ContainsKey(DotDKUID))
                {
                    DataTable dt = null;
                    IsubDotDKTKBMonHoc inter = new subDotDKTKBMonHoc();
                    dt = inter.sub_GetsubDotDKTKBMonHoc(DotDKUID, SessionInfo.GetInfoHocVienLogined.HocVienUID, ref err);
                    DataView dv = new DataView(dt);
                    dv.Sort = "MonHocTen ASC";
                    dt = dv.ToTable();

                    List<Obj_subDotDKTKBMonHoc> Lst_TKB = new List<Obj_subDotDKTKBMonHoc>();
                    if (dt.Rows.Count > 0)
                    {
                        for (int j = 0; j < dt.Rows.Count; j++)
                        {
                            Obj_subDotDKTKBMonHoc objs = new Obj_subDotDKTKBMonHoc();
                            objs.monhocID = dt.Rows[j]["MonHocID"].ToString();
                            objs.monhocTen = dt.Rows[j]["MonHocTen"].ToString();
                            objs.NhomHoc = dt.Rows[j]["NhomHoc"].ToString();
                            objs.ToHoc = dt.Rows[j]["ToHoc"].ToString();
                            objs.PhongHoc = dt.Rows[j]["PhongHoc"].ToString();
                            objs.NgayHoc = dt.Rows[j]["NgayHoc"].ToString();
                            objs.SoTiet = dt.Rows[j]["SoTiet"].ToString();
                            objs.TietBatDau = dt.Rows[j]["TietBatDau"].ToString();
                            objs.TietKetThuc = dt.Rows[j]["TietKetThuc"].ToString();
                            objs.HocPhi = dt.Rows[j]["HocPhi"].ToString();
                            objs.Siso = dt.Rows[j]["Siso"].ToString();
                            objs.SoDangKy = dt.Rows[j]["SoDangKy"].ToString();
                            objs.trungTKB = dt.Rows[j]["TrungTKBYN"].ToString();
                            Lst_TKB.Add(objs);
                        }
                    }
                    if (Lst_TKB.Count > 0)
                    {
                        lst_TKB_Hoc.DataSource = Lst_TKB;
                        lst_TKB_Hoc.DataBind();
                        lbl_TKBMHDK.Visible = true;
                    }
                    else
                    {
                        lst_TKB_Hoc.DataSource = null;
                        lst_TKB_Hoc.DataBind();
                    }

                    Dic_Buffer = null;
                    dt = null;
                    inter = null;
                    Lst_TKB = null;
                    return;
                }
            }
            catch (Exception ex)
            {
                Msg(ex.Message);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lst_TKB_Hoc_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem)
                return;
            Label lbl_Thu = (Label)e.Item.FindControl("lbl_Thu");
            Label lbl_MonHocID = (Label)e.Item.FindControl("lbl_MonHocID");
            string TrungTKB = lbl_MonHocID.ToolTip.Trim();
            if (!string.IsNullOrEmpty(TrungTKB))
            {
                if (TrungTKB.Trim().ToUpper() == "Y")
                {
                    lbl_Thu.Style.Add("cursor", "pointer");
                    lbl_Thu.Style.Add("color", "red");
                    lbl_Thu.ToolTip = "Trùng thời gian học với môn khác";
                }
                else if (TrungTKB.Trim().ToUpper() == "T")
                {
                    lbl_Thu.Style.Add("color", "green");
                    lbl_Thu.Style.Add("cursor", "pointer");
                    lbl_Thu.ToolTip = "Trùng thời gian với môn khác mà bạn đã đăng ký ở một đợt khác trong cùng 1 học kỳ";
                }
            }
            /*------------------*/
            Label lbl_Si_So = (Label)e.Item.FindControl("lbl_Si_So");
            Label lbl_So_Dang_Ky = (Label)e.Item.FindControl("lbl_So_Dang_Ky");
            if (!string.IsNullOrEmpty(lbl_Si_So.Text.Trim()) && !string.IsNullOrEmpty(lbl_So_Dang_Ky.Text.Trim()))
            {
                if (int.Parse(lbl_So_Dang_Ky.Text.Trim()) >= int.Parse(lbl_Si_So.Text.Trim()))
                {
                    lbl_So_Dang_Ky.ForeColor = System.Drawing.Color.Red;
                }
            }
        }
        #endregion

        #region Xem_Nhat_Ky
        protected void btnViewLog_Click(object sender, EventArgs e)
        {
            Response.Redirect("/app/dkmh/xem-ket-qua-dang-ky/" + Utilities.EncryptionNoneKey.Encrypt(DotDKUID));
        }
        #endregion

        private bool KiemTraNhomHoc(string NhomHoc)
        {
            string[] DHCQ = { "A" };
            string[] CDCQ = { "" };
            string[] B2 = { "B" };
            string[] KCQ = { "" };
            string[] DTTX = { "" };
            string[] CH = { "" };
            //7B49F20E-D1F0-440A-8146-DEF7FA915ECD - DHCQ
            //53626FD7-F560-4DFC-BBEB-DE1373A7C300 - CDCQ
            //5F577B08-13F1-40FC-92A6-3F8ABF4EAC0D - B2
            //9122016b-dfd4-47aa-a008-43688ec7c1a9 - DTTX
            //EF1E5972-976D-4774-860E-3338E70725B9 - KCQ
            //95FA1B65-3452-4C8C-8017-3B7B9904B7FF - CH
            //ADD2565F-8EB4-4835-9DE0-E971615BFA91 - SDH
            //C73B04CF-A5DF-40C0-8EE5-030A9AFA1492 - VP
            //F535702C-7874-431A-8988-34002CB64419 - QT
            string He = SessionInfo.GetInfoHocVienLogined.HeUID;
            if (He == "")
            {

            }
            return true;
        }
    }
}